﻿#pragma once
#ifndef WRFREQBAND_H
#define WRFREQBAND_H

#include "../WRBasics.h"

//表示频段。
class WRFreqband
{
private:
    //起始频率。
    WR64s m_begin;
    //结束频率。
    WR64s m_end;

public:
    //获取起始频率。
    inline WR64s begin(void) const
    {
        return m_begin;
    }
    //设置起始频率。
    inline void begin(WR64s value)
    {
        m_begin = value;
    }

    //获取结束频率。
    inline WR64s end(void) const
    {
        return m_end;
    }
    //设置结束频率。
    inline void end(WR64s value)
    {
        m_end = value;
    }

    //获取中心频率。
    inline WR64s center(void) const
    {
        return (m_end + m_begin)/ 2;
    }
    //获取频率宽度。
    inline WR64s width(void) const
    {
        return m_end - m_begin;
    }

    //初始化频段。
    inline WRFreqband(void)
    {
        //add code here
    }
    //初始化频段。
    inline WRFreqband(WR64s begin, WR64s end)
        : m_begin(begin), m_end(end)
    {
        //add code here
    }

    //更新频段。
    inline void update(WR64s begin, WR64s end)
    {
        m_begin = begin;
        m_end = end;
    }

    //判断当前频段是否和指定的频段值相等。
    inline bool equals(const WRFreqband& other) const
    {
        return m_begin == other.m_begin && m_end == other.m_end;
    }

    //验证当前频段是否有效。
    inline bool validate(void) const
    {
        return m_begin < m_end;
    }

    //判断指定的频率是否包含在当前频段之中。
    inline bool contains(WR64s value) const
    {
        return validate() && value >= m_begin && value <= m_end;
    }
    //判断指定的频段是否包含在当前频段之中。
    inline bool contains(const WRFreqband& other) const
    {
        return validate() && other.validate() && other.m_begin >= m_begin && other.m_end <= m_end;
    }

    //重载等于操作符。
    bool operator ==(const WRFreqband& other) const
    {
        return m_begin == other.m_begin && m_end == other.m_end;
    }
    //重载不等于操作符。
    bool operator !=(const WRFreqband& other) const
    {
        return m_begin != other.m_begin || m_end != other.m_end;
    }
};

#endif // WRFREQBAND_H
